﻿<ad:DockableContent 
    x:Class="WPFToolboxForSiemensPLCs.DockableWindows.DockableContentProjectList" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:ad="clr-namespace:AvalonDock;assembly=AvalonDock" 
    xmlns:s="clr-namespace:System;assembly=mscorlib" 
    xmlns:Converters="clr-namespace:JFKCommonLibrary.WPF.Converters;assembly=JFKCommonLibrary" 
    xmlns:Projectfolders="clr-namespace:DotNetSiemensPLCToolBoxLibrary.DataTypes.Projectfolders;assembly=DotNetSiemensPLCToolBoxLibrary"
    xmlns:WPFToolboxForSiemensPLCs="clr-namespace:JFKCommonLibrary.WPF;assembly=JFKCommonLibrary" mc:Ignorable="d" d:DesignHeight="339" d:DesignWidth="482">

	<ad:DockableContent.Resources>
        <Converters:TreeViewLineConverter x:Key="LineConverter" />
		<SolidColorBrush x:Key="GlyphBrush" Color="#444" />
		<Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
			<Setter Property="Focusable" Value="False" />
			<Setter Property="Template">
				<Setter.Value>                   
                    <ControlTemplate TargetType="ToggleButton">
                       <Border Background="#00FFFFFF" Width="19" Height="13">
                           <Border BorderThickness="1,1,1,1" CornerRadius="1,1,1,1" BorderBrush="#FF7898B5" Width="9" Height="9" SnapsToDevicePixels="True">
                               <Border.Background>
                                   <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                                       <LinearGradientBrush.GradientStops>
                                            <GradientStop Color="#FFFFFFFF" Offset="0.2" />
                                            <GradientStop Color="#FFC0B7A6" Offset="1" />
                                        </LinearGradientBrush.GradientStops>
                                    </LinearGradientBrush>
                                </Border.Background>
                                <Path Data="M0,2L0,3 2,3 2,5 3,5 3,3 5,3 5,2 3,2 3,0 2,0 2,2z" Fill="#FF000000" Name="ExpandPath" Margin="1,1,1,1" />
                            </Border>
                        </Border>
                        <ControlTemplate.Triggers>
                           <Trigger Property="ToggleButton.IsChecked">
                               <Setter Property="Path.Data" TargetName="ExpandPath">
                                   <Setter.Value>
                                        <StreamGeometry>M0,2L0,3 5,3 5,2z</StreamGeometry>
                                    </Setter.Value>
                                </Setter>
                               <Trigger.Value>
                                    <s:Boolean>True</s:Boolean>
                                </Trigger.Value>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
			</Setter>
		</Style>	
        <Style x:Key="TreeViewItemFocusVisual">
			<Setter Property="Control.Template">
				<Setter.Value>
					<ControlTemplate>
						<Border>
							<Rectangle Margin="0,0,0,0" StrokeThickness="5" Stroke="Black" StrokeDashArray="1 2" Opacity="0" />
						</Border>
					</ControlTemplate>
				</Setter.Value>
			</Setter>
		</Style>
        
	</ad:DockableContent.Resources>
    
	<TreeView Name="myTreeView" ItemsSource="{Binding Projects}" MouseDoubleClick="TreeView_MouseDoubleClick" AllowDrop="True" Drop="myTreeView_Drop">
		<TreeView.Resources>
			<ResourceDictionary>
				<ResourceDictionary.MergedDictionaries>
					<ResourceDictionary Source="/PresentationFramework.Luna, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/luna.normalcolor.xaml" />
				</ResourceDictionary.MergedDictionaries>
				<HierarchicalDataTemplate DataType="{x:Type Projectfolders:ProjectFolder}" ItemsSource="{Binding SubItems}">
					<HierarchicalDataTemplate.ItemContainerStyle>
						<Style TargetType="{x:Type TreeViewItem}">
							<Setter Property="Background" Value="Transparent" />
							<Setter Property="HorizontalContentAlignment" Value="{Binding Path=HorizontalContentAlignment,
			  RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" />
							<Setter Property="VerticalContentAlignment" Value="{Binding Path=VerticalContentAlignment,
			  RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" />
							<Setter Property="Padding" Value="1,0,0,0" />
							<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
							<Setter Property="FocusVisualStyle" Value="{StaticResource TreeViewItemFocusVisual}" />
							<Setter Property="Template">
								<Setter.Value>
									<ControlTemplate TargetType="{x:Type TreeViewItem}">
										<Grid>
											<Grid.ColumnDefinitions>
												<ColumnDefinition MinWidth="19" Width="Auto" />
												<ColumnDefinition Width="Auto" />
												<ColumnDefinition Width="*" />
											</Grid.ColumnDefinitions>
											<Grid.RowDefinitions>
												<RowDefinition Height="Auto" />
												<RowDefinition />
											</Grid.RowDefinitions>

											<!-- Connecting Lines -->
											<Rectangle x:Name="HorLn" Height="1" Stroke="#8888" Margin="10,0,0,0" SnapsToDevicePixels="true" />
											<Rectangle x:Name="VerLn" Width="1" Stroke="#8888" Grid.RowSpan="2" SnapsToDevicePixels="true" />
                                            <ToggleButton x:Name="Expander" Style="{StaticResource ExpandCollapseToggleStyle}" IsChecked="{Binding Path=IsExpanded,
							  RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press" />
											<Border Name="Bd" Grid.Column="1" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
												<ContentPresenter x:Name="PART_Header" ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" />
											</Border>
											<ItemsPresenter x:Name="ItemsHost" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" />
										</Grid>
										<ControlTemplate.Triggers>

											<!-- This trigger changes the connecting lines if the item is the last in the list -->
											<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource LineConverter}}" Value="true">
												<Setter TargetName="VerLn" Property="Height" Value="6" />
												<Setter TargetName="VerLn" Property="VerticalAlignment" Value="Top" />
											</DataTrigger>
											<Trigger Property="IsExpanded" Value="false">
												<Setter TargetName="ItemsHost" Property="Visibility" Value="Collapsed" />
											</Trigger>
											<Trigger Property="HasItems" Value="false">
												<Setter TargetName="Expander" Property="Visibility" Value="Hidden" />
											</Trigger>
											<MultiTrigger>
												<MultiTrigger.Conditions>
													<Condition Property="HasHeader" Value="false" />
													<Condition Property="Width" Value="Auto" />
												</MultiTrigger.Conditions>
												<Setter TargetName="PART_Header" Property="MinWidth" Value="75" />
											</MultiTrigger>
											<MultiTrigger>
												<MultiTrigger.Conditions>
													<Condition Property="HasHeader" Value="false" />
													<Condition Property="Height" Value="Auto" />
												</MultiTrigger.Conditions>
												<Setter TargetName="PART_Header" Property="MinHeight" Value="19" />
											</MultiTrigger>
											<Trigger Property="IsSelected" Value="true">
												<Setter TargetName="Bd" Property="Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
												<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}" />
											</Trigger>
											<MultiTrigger>
												<MultiTrigger.Conditions>
													<Condition Property="IsSelected" Value="true" />
													<Condition Property="IsSelectionActive" Value="false" />
												</MultiTrigger.Conditions>
												<Setter TargetName="Bd" Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
												<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
											</MultiTrigger>
											<Trigger Property="IsEnabled" Value="false">
												<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
											</Trigger>
										</ControlTemplate.Triggers>
									</ControlTemplate>
								</Setter.Value>
							</Setter>
						</Style>
					</HierarchicalDataTemplate.ItemContainerStyle>
					<StackPanel Orientation="Horizontal">
						<WPFToolboxForSiemensPLCs:WinFormsImage ImageSource="{Binding FolderClosedImage}"></WPFToolboxForSiemensPLCs:WinFormsImage>
						<TextBlock Text=" " />
						<TextBlock VerticalAlignment="Center" FontFamily="Courier New" Text="{Binding Name}"></TextBlock>
					</StackPanel>
				</HierarchicalDataTemplate>
			</ResourceDictionary>
		</TreeView.Resources>
	</TreeView>
</ad:DockableContent>
